In recent years, content distribution systems have been developed which distribute content that are digital copyrighted works such as music, images, and games, using the Internet or digital broadcasting. Some of the systems have been in practical use (see patent document 1, for example). In connection with the distribution of such content, from the viewpoint of copyright protection, methods for controlling use of the content have also been considered to restrict the number of playbacks, playback permitted period, transfers, duplicates, and writing of the distributed content.
A conventional system is modeled in such a manner that a server distributes information (hereinafter referred to as “license”) that is necessary for using the content and includes content use conditions, a content key and the like, and a terminal apparatus at home playbacks or writes the content based on the license distributed by the server. Further, the license distributed by the server is held by individual terminal apparatuses, and the respective terminal apparatuses use the content based on the license held individually. More specifically, the terminal apparatus interprets the use condition included in the license using a secure module and the like that implements a use condition determining logic such as control for the number of uses and valid period, determines whether or not use of the content is permitted, and uses the content under the use condition.
On the other hand, in a model where use condition is determined by the module that implements only the static use condition determining logic as described above, there is a problem in that versatility of use condition control is lost. In order to solve the problem, the following model has been proposed. A server distributes to a terminal apparatus a program including a use condition determining logic and use conditions. Upon receiving the program, the terminal apparatus executes the program so as to achieve a versatile control of the use condition. For example, the server distributes to the terminal apparatus a bytecode which is a program representation executable in a virtual machine (hereinafter referred to as “VM”). The terminal apparatus executes the bytecode on the VM of the terminal apparatus, which allows versatile control of use condition to be performed. Here, the bytecode is an intermediate program which is described in set of instructions defined not to depend on a certain operation system (OS) and hardware, and which can be interpreted or executed by the VM. More specifically, the bytecode is a program which executes a use condition such as “if current time is earlier than Aug. 8, 2008, use is permitted”, and a use condition determining logic.
Next, a problem in a use condition control using the bytecode is described. The use condition control using the bytecode increases versatility of use condition determination. Whereas, it is considered that such cases where the operation of the bytecode in the terminal apparatus cannot be guaranteed will increase relatively, compared to the cases where use condition is determined using a static use condition determining logic. Specific examples of such cases include the case where a defect in a use condition determining logic described in a bytecode causes processing to go into an infinite loop on the VM of the terminal apparatus, which results in not terminating the processing, that is, not enabling playback of the content.
Conventionally, such problems have been solved as follows: in order to generate and distribute the bytecode which are reliable, the license distribution server generates the bytecode with proficient in the technical specification and performs several tests on the generated bytecode, which result in increase in cost.
As described, there is a need for a content distribution system which is capable of performing use condition determination which is reliable and versatile.    Patent Reference 1: Japanese Unexamined Patent Application Publication No. 2000-48076